<?php
namespace app\data_magic\model;

use think\Model;

/**
 * 字段
 * @property string $id 字段ID
 * @property string $table_id 表ID
 * @property string $name 字段名称
 * @property string $alias 别名
 * @property string $title 标题
 * @property string $describe 描述
 * @property string $data_type SQL类型
 * @property string $max_length 最大长度
 * @property string $type 类型
 * @property string $type_params 类型相关的参数
 * @property string $create_time 创建时间
 * @property string $update_time 更新时间
 * @property string $is_nullable 是否可以为空
 */
class FieldModel extends Model
{
    /**
     * @var bool $readable 是否可读
     * @var bool $writable 是否可写
     * @var bool $required 是否必填
     */
    public $readable=true;
    public $writable=true;
    public $required=false;

    /**
     * 从数据库存储的格式转换数据
     * @param FieldData[] $fields 字段设置
     * @param array $item 单条数据
     */
    public function convertFromSaveFormat($fields,$item)
    {
        return $item;
    }

    /**
     * 将数据转换成数据库存储的格式
     * @param FieldData[] $fields 字段设置
     * @param array $item 单条数据
     */
    public function convertToSaveFormat($fields,$item)
    {
        foreach($fields as $field){
            $field_name=$field->name;
            if(isset($item[$field_name])){
                $field_name=$field->name;
                if(in_array($field->type,["select","radio","checkbox","refer"])){
                    $item[$field_name]=implode(",",$item[$field_name]);
                }
                elseif(in_array($field->type,["images","files","location"])){
                    $item[$field_name]=json_encode($item[$field_name]);
                }
            }
        }
        return $item;
    }
}